<?php


namespace App\Messages;


use Overtrue\EasySms\Message;
use Overtrue\EasySms\Contracts\GatewayInterface;
use Overtrue\EasySms\Strategies\OrderStrategy;

class ShippingStatus25Order extends Message
{
    protected $strategy = OrderStrategy::class; // 本短信的网关使用策略(顺序发送)，覆盖全局配置中的 `default.strategy`

    protected $endAddress;
    protected $orderNum;
    protected $dvName;
    protected $dvTelephone;

    /**
     * 本短信的适用平台，覆盖全局配置中的 `default.gateways`
     * aliyun：短信内容使用 template + data
     * yunpian：短信内容使用 content
     * qcloud：短信内容使用 content
     * @var array
     */
    protected $gateways = ['aliyun', 'yunpian'];

    /**
     * ShippingStatus25Order constructor.
     * @param $endAddress
     * @param $orderNum // 注意，此处的$orderNum是运单号
     * @param $dvName
     * @param $dvTelephone
     */
    public function __construct($endAddress, $orderNum, $dvName, $dvTelephone)
    {
        $this->endAddress  = $endAddress;
        $this->orderNum    = $orderNum;
        $this->dvName      = $dvName;
        $this->dvTelephone = $dvTelephone;
    }

    /**
     * 定义直接使用内容发送平台的内容
     * @param GatewayInterface|null $gateway
     * @return string
     */
    public function getContent(GatewayInterface $gateway = null)
    {
        return sprintf('送往%s的任务有司机完成装货，运单号：%s，司机名称:%s,电话：%s',
            $this->endAddress,
            $this->orderNum,
            $this->dvName,
            $this->dvTelephone
        );
    }

    /**
     * 定义使用模板发送方式平台所需要的模板 ID
     * @param GatewayInterface|null $gateway
     * @return string
     */
    public function getTemplate(GatewayInterface $gateway = null)
    {
        if ($gateway->getName() == 'aliyun') {
            return 'SMS_196618266';
        }

        return;
    }

    /**
     * 模板参数
     * @param GatewayInterface|null $gateway
     * @return array
     */
    public function getData(GatewayInterface $gateway = null)
    {
        if ($gateway->getName() == 'aliyun') {
            return [
                'endAddress'  => $this->endAddress,
                'orderNum'    => $this->orderNum,
                'dvName'      => $this->dvName,
                'dvTelephone' => $this->dvTelephone,
            ];
        }

        return [];
    }
}